// 在store(仓库)下的index.js这份文件，就是用来做状态管理
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 拆分写
import state from './state'
import getters from './getters'

import users from './users/index'
// 有迎入就有抛出
export default new Vuex.Store({
    //state相当于组件的data，专门用来存放全局的数据
    state,
    // getters相当于组件中的computed，getters是全局的，computed是组件内部使用的
    getters,
        // mutation相当于组件中的methods，但是它不能使用异步方法（定时器、axios）
    mutations:{
        // 让num累加
        // paylod是一个形参，如果组件在commit时，有传这个参数过来，
        // 就存在，如果没有参数传过来，就是undefined
        increase(state,payload){
            state.num+=payload ? payload:1
        },
        decrease(state){
            state.num--
        }
    },
    // actions专门用来处理异步，实际修改状态值的，依然是mutations
    actions:{
        // 点击了“减1”按钮后，放慢一秒再执行减法
        decreaseAsync(context){
            context.commit('decrease')
        }
    },

    //主模块
    modules:{
        users
    }
}) 